package main

import (
	"fmt"
	"net"
)

// 处理客户端的通讯连接
func process(conn net.Conn) {
	//延时关闭conn
	defer func() {
		_ = conn.Close()
	}()

	// 读客户端发送的信息
	for {
		buffer := make([]byte, 1024*4)
		fmt.Println("等待客户端发送数据")
		n, err := conn.Read(buffer)
		if n != 4 || err != nil {
			fmt.Println("server read error", err)
			return
		}
		fmt.Println(buffer[:4])
	}
}

func main() {
	fmt.Println("服务器在8889端口监听...")
	listen, err := net.Listen("tcp", ":8889")

	defer func() {
		_ = listen.Close()
	}()
	if err != nil {
		fmt.Println("net.Listen err:", err)
		return
	}
	// 监听成功，等待客户端来连接服务器
	for {
		fmt.Println("等待客户端连接服务器")
		conn, err := listen.Accept()
		if err != nil {
			fmt.Println("listen.Accept err:", err)
		}
		// 一但连接成功，则启动一个协程和客户端保持通讯。
		go process(conn)
	}
}
